/**
 * 这里面都是一些工具函数,如数据库操作,jwe,验证码等等
 */
const mysql = require("mysql");//数据库包
const config = require("./config");//相关基础信息文件,比如jwt秘钥啊,数据库账户密码啊,用于这里的连接操作
// 数据库连接方式一
// 连接池

// 1.创建连接池
let pool = mysql.createPool(config.config);

// 2.异步数据库操作函数创建
function query(sql,values){
    return new Promise((resolve,reject)=>{
        //异步操作放在promise中,以便于解决回调地狱,方便拿结果
        pool.getConnection((err,connection)=>{
            if (err) {
                // 连接失败
                reject(err);
            }else{
                // 连接成功,则执行数据库操作
                //异步操作放在promise中,以便于解决回调地狱,方便拿结果
                connection.query(sql,values,(err,rows)=>{
                    if (err) {
                        //参数或什么有误
                        reject(err);
                    }else{
                        // 操作成功
                        // 返回结果
                        resolve(rows);
                    }

                    // 操作完成,结束会话
                    connection.release();
                });
            }
        });
    });
}


// 通过async和await将查询的结果拿出来,座位await的形式,同步的形式
async function db(sql,values){
    // console.log(sql);
    let datalist =  await query(sql,values).catch(e=>console.log("参数有误"))
    return datalist;
}

// 导出这些工具函数
module.exports = {
    db
}